//
//  QLTimer.h
//  GCDTimerTest
//
//  Created by 小零钱 on 2019/5/10.
//  Copyright © 2019 QLing. All rights reserved.
//

#import <Foundation/Foundation.h>

typedef void(^timerTask)(void);

NS_ASSUME_NONNULL_BEGIN

@interface QLTimer : NSObject


/**
 GCD定时器的封装

 @param task 定时器要执行的任务
 @param start 开始时间（延迟几秒执行）
 @param interval 定时器的任务执行间隔时间
 @param repeats 是否重复执行任务
 @param async 是否异步执行任务(是否不在主线程执行任务)
 @return 当前任务的唯一标识
 */
+ (NSString *)executeTask:(timerTask)task
                    start:(NSTimeInterval)start
                 interval:(NSTimeInterval)interval
                  repeats:(BOOL)repeats
                    async:(BOOL)async;


/**
 GCD定时器的封装

 @param target 定时器执行任务的对象
 @param selector 定时器执行任务的方法
 @param start 开始时间（延迟几秒执行）
 @param interval 定时器的任务执行间隔时间
 @param repeats 是否重复执行任务(是否不在主线程执行任务)
 @param async 是否异步执行任务
 @return 当前任务的唯一标识
 */
+ (NSString *)executeTask:(id)target
                 selector:(SEL)selector
                    start:(NSTimeInterval)start
                 interval:(NSTimeInterval)interval
                  repeats:(BOOL)repeats
                    async:(BOOL)async;


/**
 取消某个任务
 
 @param name 要取消的任务的唯一标识
 */
+ (void)cancelTask:(NSString *)name;

@end

NS_ASSUME_NONNULL_END
